/**
 *
 */
package com.naiterui.ehp.bs.im.utils;

import org.apache.commons.lang3.StringUtils;

/**
 * ClientId、Topic命名工具类
 * @author Gaoll
 * @since HDZ1.0.0
 */
public class NameUtils {

    /**
     * 用户类型-医生APP端：<code>USER_TYPE_DOCTOR</code>
     */
    public static final String USER_TYPE_DOCTOR = "d";
    /**
     * 用户类型-患者APP端：<code>USER_TYPE_PATIENT</code>
     */
    public static final String USER_TYPE_PATIENT = "p";

    /**
     * NameUtils.drMsgTopic()
     * @Author Gaoll
     * @Date 2016年7月21日
     * @since HDZ1.0.0
     * @param userId 医生id
     * @return
     */
    public static String drMsgTopic(Long userId) {

        return Constants.PREFIX_DR + userId;
    }

    /**
     * NameUtils.ptMsgTopic()
     * @Author Gaoll
     * @Date 2016年7月22日
     * @since HDZ1.0.0
     * @param userId 患者id
     * @return
     */
    public static String ptMsgTopic(Long userId) {

        return Constants.PREFIX_PT + userId;
    }

    /**
     * NameUtils.drPubPushTopic()
     * @Author Gaoll
     * @Date 2016年7月27日
     * @since 1.0.0
     * @param pubPush
     * @return
     */
    public static String drPubPushTopic(String pubPush) {
        return Constants.PREFIX_DR + pubPush;
    }

    /**
     * NameUtils.drPubPushTopic()
     * @Author Gaoll
     * @Date 2016年7月27日
     * @since 1.0.0
     * @param pubPush
     * @return
     */
    public static String ptPubPushTopic(String pubPush) {
        return Constants.PREFIX_PT + pubPush;
    }

    /**
     * NameUtils.drPriPushTopic()
     * 
     * @Author Gaoll
     * @Date 2016年7月21日
     * @since HDZ1.0.0
     * @param userId
     *            医生id
     * @return
     */
    public static String drPriPushTopic(Long userId) {

        return Constants.PREFIX_DR + userId + "/notice";
    }

    /**
     * NameUtils.ptPriPushTopic()
     * 
     * @Author Gaoll
     * @Date 2016年7月22日
     * @since HDZ1.0.0
     * @param userId
     *            患者id
     * @return
     */
    public static String ptPriPushTopic(Long userId) {

        return Constants.PREFIX_PT + userId + "/notice";
    }

    /**
     * NameUtils.isIllegal()
     * @Author Gaoll
     * @Date 2016年7月29日
     * @since 1.0.0
     * @param userMark
     * @return
     */
    public static boolean isIllegal(String userMark) {
        return StringUtils.isNotEmpty(userMark) && (userMark.startsWith(Constants.PREFIX_DR) || userMark.startsWith(Constants.PREFIX_PT));
    }

    /**
     * NameUtils.parseUserId()
     * @Author Gaoll
     * @Date 2016年7月29日
     * @since 1.0.0
     * @param userMark
     * @return
     */
    public static Long parseUserId(String userMark) {
        if (isIllegal(userMark)) {
            return Long.valueOf(userMark.substring(3));
        }
        return null;
    }

}
